Das Java RMI-Framework (Remote Method Invocation) ermöglicht die virtuelle Erstellung transparenter verteilter Services und Anwendungen. RMI-basierte Anwendungen bestehen aus Java-Objekten, die gegenseitig ihre Methoden aufrufen, egal wo sie sich befinden. Dies ermöglicht einem Java-Objekt den Aufruf von Methoden eines anderen Java-Objekts, das sich auf einer anderen virtuellen Maschine befindet, in derselben Weise, wie Methoden eines Java-Objekts aufgerufen werden, das sich auf derselben virtuellen Maschine befindet.
Schnittstellen
Jedes entfernte Objekt muss exportiert werden, so dass es für eingehende entfernte Methodenaufrufe zur Verfügung steht. Entfernte Objekte können manuell exportiert werden, indem man die Methode java.rmi.server.UnicastRemoteObject.exportObject oder die Methode java.rmi.activation.Activatable.exportObject vom entfernten Objekt aus aufruft. Entfernte Objekte werden automatisch bei der Erzeugung exportiert, wenn sie entweder java.rmi.server.UnicastRemoteObject oder java.rmi.activation.Activatable erweitern.
Für jedes entfernte Objekt muss ein Konstruktor definiert werden, der eine java.rmi.RemoteException auslöst, da der Exportvorgang schließlich auch fehlschlagen kann. Listing A zeigt eine gültige Implementierung für die Schnittstelle des entfernten Objekts TimeKeeper.
Die RMI-Registry
RMI definiert ein Repository des entfernten Objekts, auch als RMI-Registry bekannt. Eine RMI-Registry ist ein einfacher Nameserver, der Referenzen zu entfernten Objekten verwaltet und diese anderen RMI-Servern zur Verfügung stellt.
Auf UNIX-basierten Systemen dient der folgende Befehl zum Starten der RMI-Registry:
Auf Windows-Systemen kann man für das Starten der RMI-Registry einen der beiden folgenden Befehle verwenden:
Standardmäßig läuft die RMI-Registry auf Port 1099. Man kann einen anderen Port zuweisen, indem man die Port-Nummer beim Starten der Registry angibt. So startet z. B. der folgende Befehl die Registry auf einem Windows-System auf Port 3000:
Neueste Kommentare
1 Kommentar zu Verteilte Services mit dem Java RMI-Framework
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
kurz
Ein eher kurzer Beitrag über RMI, der nichts aussagt über die Komplexität der Entwicklung und auch die Schwächen von RMI (zB Objektmigration). Eine Aufstellung der Vor- und Nachteile in Zusammenhang mit andereren Möglichkeiten der verteilten Softwareentwicklung in Java (Sockets, Corba, …) wäre interessant gewesen.